Data communications between software applications are not as secure as they should be. Many software applications communicate by symmetric key encryption using a single key that is shared. Other software applications use asymmetric encryption using Public Key Infrastructure (PKI) by using public and private keys. However, these encryption techniques are not sufficient to protect a communication link between two software applications. For example, in asymmetric encryption, if the private key is compromised, the communication link is not secure and the person or software snooping on the communication link can read all the messages communicated.